home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 2 / LSD and 17bit Compendium Deluxe - Volume II.iso / a / prog / asmsrc / meltdown.lha / FILLED-LINES / Line.s < prev   
Encoding:
Text File  |  1988-07-19  |  7.9 KB  |  343 lines

  1. *****************************************************************************
  2. *                                                                           *
  3. *                   Filled Line Intro                           *
  4. *                                                                           *
  5. *  Start Date : 1/3/91                                                      *
  6. * Last Update : 1/3/91                                                      *
  7. *                                  Code : Melt Down *
  8. *                                                                           *
  9. *****************************************************************************
  10.  
  11. ; Include the macros
  12.  
  13.     Incdir    Df1:
  14.     Include    Source/Macro
  15.  
  16. *****************************************************************************
  17.  
  18. ; Dont forget to use chip ram
  19.  
  20.     Chip
  21.     
  22. *****************************************************************************
  23.  
  24. ; Kill the operating system for good mesure
  25.  
  26.     Kill        
  27.     
  28. *****************************************************************************
  29.  
  30. ; Load custom and set up copper list
  31.  
  32.     Lea    Custom,A5
  33.     Move.l    #Copper,Cop1lch(a5)
  34.     
  35. *****************************************************************************
  36.  
  37. ; Clear Some Memory
  38.  
  39.     Blitwait
  40.     Move.l    #$70000,Bltdpth(a5)
  41.     Move.l    #-1,Bltafwm(a5)
  42.     Move.w    #0,Bltdmod(a5)
  43.     Move.l    #$01000000,Bltcon0(a5)
  44.     Move.w    #256*64+60,Bltsize(a5)
  45.  
  46. *****************************************************************************
  47.  
  48. ; Main routine here
  49.  
  50. Mouse
  51.     Move.l    $dff004,d2
  52.     And.l    #$1ff00,d2    
  53.     Cmp.l    #$100,d2
  54.     Bne.s    Mouse
  55.  
  56.     Move.w    #$f0f,$dff180
  57.     Eor.l    #$4000,Bit1
  58.     Eor.l    #$4000,Bit2
  59.     Eor.l    #$4000,ScreenPtr
  60.  
  61.     Bsr    Clear
  62.     Bsr    UpDateAll
  63.     Bsr    Conect
  64.     Move.w    #$000,$dff180
  65.     Tstmice    Mouse                ; Pressed the mouse
  66.     
  67. *****************************************************************************
  68.  
  69. ; Return operating system and go back to user
  70.  
  71.     Heal
  72.     Clr.l    D0                ; No error
  73.     Rts
  74.     
  75. *****************************************************************************
  76.  
  77. Clear
  78.     Blitwait                ; Blitter Nasty But Why Do
  79.     Move.l    #$01000000,Bltcon0(a5)        ; Clear
  80.     Move.w    #$0000,Bltdmod(a5)        ; Skip No Bytes
  81.     Move.l    ScreenPtr,A1
  82.     Move.l    a1,Bltdpth(A5)            ; Set Dest
  83.     Move.l    #-1,Bltafwm(a5)            ; Use All Bits
  84.     Move.w    #100*64+20,Bltsize(a5)        ; Fill Half Screen
  85.     Movem.l    a0-a6/d0-d7,-(a7)        ; Save The Regs
  86.     Movem.l    RegFiller(pc),a1-a6/d0-d7    ; Clear The Regs
  87.     Move.l    ScreenPtr,A0
  88.     Add.l    #8000,A0
  89.  
  90. ; 4000/56 = 71.14 Rnd Up = 72
  91.     Rept    72                ; Rept it 58 times
  92.     Movem.l    a1-a6/d0-d7,-(a0)        ; Clear 56 Butes
  93.     Endr                    ; End repeat
  94.     Movem.l    (a7)+,a0-a6/d0-d7        ; Restor Regs
  95.     Rts
  96. RegFiller
  97.     Dcb.l    16,0
  98.     Rts
  99.  
  100. *****************************************************************************
  101.  
  102. Conect
  103.     Move.w    #40,$60(a5)            ; Screen In Bytes
  104.     Move.l    #-$8000,$72(a5)            ; Set to line ??????
  105.     Move.l    #-1,$44(a5)            ; The Mask
  106.     Move.l    ScreenPtr,A0
  107.     Move.l    #40,D5
  108.     Lea    XSin,A1    
  109.     Lea    YSin,A2
  110.     Lea    Form1+2,a3
  111.     Lea    Form1Con,A4
  112.     Move.w    (a4)+,d7
  113. DoLines
  114.     Move.w    (a4)+,d6            ; Get Offset        
  115.     Move.w    (a3,d6),d0            ; Get X
  116.     Move.w    2(a3,d6),d1            ; Get Y
  117.     Move.w    4(a3,d6),d2            ; Get X1
  118.     Move.w    6(a3,d6),d3            ; Get Y1
  119.  
  120.     Move.w    (a1,d0),d0            ; Get X Val
  121.     Move.w    (a2,d1),d1            ; Get Y Val
  122.     Add.w    (a1,d2),d0            ; Add X Val
  123.     Add.w    (a2,d3),d1            ; Add Y Val
  124.     Movem.w    d0/d1,-(A7)
  125.     Move.w    (a4)+,d6            
  126.     Move.w    (a3,d6),d0            
  127.     Move.w    2(a3,d6),d1            
  128.     Move.w    4(a3,d6),d2            
  129.     Move.w    6(a3,d6),d3            
  130.     Move.w    (a1,d0),d0            
  131.     Move.w    (a2,d1),d1            
  132.     Add.w    (a1,d2),d0            
  133.     Add.w    (a2,d3),d1            
  134.     Movem.w    (a7)+,d2/d3
  135.     Movem.l    a0/d5,-(a7)
  136.     cmp.w    d1,d3
  137.     bgt.s    line1
  138.     exg    d0,d2
  139.     exg    d1,d3
  140.     beq.s    out
  141. line1:    move.w    d1,d4
  142.     muls    d5,d4
  143.     move.w    d0,d5
  144.     add.l    a0,d4
  145.     asr.w    #3,d5
  146.     add.w    d5,d4
  147.     moveq    #0,d5
  148.     sub.w    d1,d3
  149.     sub.w    d0,d2
  150.     bpl.s    line2
  151.     moveq    #1,d5
  152.     neg.w    d2
  153. line2:    move.w    d3,d1
  154.     add.w    d1,d1
  155.     cmp.w    d2,d1
  156.     dbhi    d3,line3
  157. line3:    move.w    d3,d1
  158.     sub.w    d2,d1
  159.     bpl.s    line4
  160.     exg    d2,d3
  161. line4:    addx.w    d5,d5
  162.     add.w    d2,d2
  163.     move.w    d2,d1
  164.     sub.w    d3,d2
  165.     addx.w    d5,d5
  166.     and.w    #15,d0
  167.     ror.w    #4,d0
  168.     or.w    #$a4a,d0
  169. waitblt:btst    #6,2(a5)
  170.     bne.s    waitblt
  171.     move.w    d2,$52(a5)
  172.     sub.w    d3,d2
  173.     lsl.w    #6,d3
  174.     addq.w    #2,d3
  175.     move.w    d0,$40(a5)
  176.     move.b    oct(PC,d5.w),$43(a5)
  177.     move.l    d4,$48(a5)
  178.     move.l    d4,$54(a5)
  179.     movem.w    d1/d2,$62(a5)
  180.     move.w    d3,$58(a5)
  181. out:    
  182.     Movem.l    (A7)+,a0/d5
  183.     Dbf    D7,Dolines
  184.     Blitwait
  185.     Add.l    #10240-2,A0            ; Plane Size -2
  186.     Move.l    #$09f0000a,Bltcon0(a5)        ; D=A Desending And Fill
  187.     Move.l    #$ffffffff,bltafwm(a5)        ; Use All Bits And Why Not
  188.     Move.l    a0,bltapth(a5)            ; Set Ketchup
  189.     Move.l    a0,bltdpth(a5)            ; Set THE IN PLACE
  190.     Move.w    #0,Bltamod(a5)            ; Dont Skip 
  191.     Move.w    #0,Bltdmod(a5)            ; To My Loop
  192.     Move.w    #255*64+20,bltsize(a5)        ; Do The Full Screen
  193.     Rts
  194.     
  195. *****************************************************************************
  196.  
  197. oct:    dc.l    $3431353,$b4b1757   
  198. ScreenPtr
  199.     Dc.l    $70000
  200.     
  201. *****************************************************************************
  202.  
  203. UpDateAll
  204.     Lea    Form1,A0
  205.     Move.w    (A0)+,d7            ; Number Of Points On Lines
  206.     Move.l    #$01fe01fe,D0
  207.     Move.w    #16,d2
  208. Update
  209.     Move.l    8(A0),d1
  210.     Add.l    d1,(A0)
  211.     Move.l    12(A0),d1
  212.     Add.l    d1,4(A0)
  213.     And.l    D0,(A0)
  214.     And.l    D0,4(A0)
  215.     Lea    (a0,d2),a0
  216.     Dbf    D7,UpDate
  217.     Rts
  218.  
  219. *****************************************************************************
  220.  
  221. ; All copper list after here
  222.  
  223. Copper
  224.  
  225.     Spr_Off                    ; Switch sprites off
  226.     Cmove    $2c71,Diwstrt
  227.     Cmove    $2cc1,Diwstop
  228.     Cmove    $0038,Ddfstrt
  229.     Cmove    $00d0,Ddfstop
  230.     Cmove    $0000,Bpl1mod            
  231.     Cmove    -80,Bpl2mod
  232. ;    Cmove    $0000,Color00
  233.     Cmove    $0fff,Color01
  234.     Cmove    $0fff,Color02
  235.     Cmove    $0000,Color03
  236. Bit1
  237.     Cmove    $0000,Bpl1ptl
  238.     Cmove    $0007,Bpl1pth
  239. Bit2
  240.     Cmove    $2800,Bpl2ptl
  241.     Cmove    $0007,Bpl2pth
  242.     Cmove    $2200,Bplcon0
  243.     Endcop
  244.  
  245. *****************************************************************************
  246.  
  247. Posa    Macro
  248.     Dc.w    \1*2&$1fe,\2*2&$1fe,\3*2&$1fe,\4*2&$1fe,\5*2,\6*2,\7*2,\8*2
  249.     Endm
  250. Form1    
  251.     Include    Filled-Lines/Forms/Form1
  252.     
  253. *****************************************************************************
  254.  
  255. Conect    Macro
  256.     Dc.w    (\1*16),(\2*16)
  257.     Endm
  258. Form1Con
  259.     Include    Filled-Lines/Forms/Form1a
  260.     
  261. *****************************************************************************
  262.  
  263. ; X Sine Table
  264.  
  265. XSin
  266.     Rept    2
  267.     dc.w    159,159,159,159,159,158,158,158
  268.     dc.w    157,157,157,156,156,155,154,154
  269.     dc.w    153,152,151,151,150,149,148,147
  270.     dc.w    146,144,143,142,141,140,138,137
  271.     dc.w    136,134,133,131,130,128,127,125
  272.     dc.w    124,122,120,119,117,115,113,112
  273.     dc.w    110,108,106,104,103,101,99,97
  274.     dc.w    95,93,91,89,87,85,83,81
  275.     dc.w    80,78,76,74,72,70,68,66
  276.     dc.w    64,62,60,58,56,55,53,51
  277.     dc.w    49,47,46,44,42,40,39,37
  278.     dc.w    35,34,32,31,29,28,26,25
  279.     dc.w    23,22,21,19,18,17,16,15
  280.     dc.w    13,12,11,10,9,8,8,7
  281.     dc.w    6,5,5,4,3,3,2,2
  282.     dc.w    2,1,1,1,0,0,0,0
  283.     dc.w    0,0,0,0,0,1,1,1
  284.     dc.w    2,2,2,3,3,4,5,5
  285.     dc.w    6,7,8,8,9,10,11,12
  286.     dc.w    13,15,16,17,18,19,21,22
  287.     dc.w    23,25,26,28,29,31,32,34
  288.     dc.w    35,37,39,40,42,44,46,47
  289.     dc.w    49,51,53,55,56,58,60,62
  290.     dc.w    64,66,68,70,72,74,76,78
  291.     dc.w    80,81,83,85,87,89,91,93
  292.     dc.w    95,97,99,101,103,104,106,108
  293.     dc.w    110,112,113,115,117,119,120,122
  294.     dc.w    124,125,127,128,130,131,133,134
  295.     dc.w    136,137,138,140,141,142,143,144
  296.     dc.w    146,147,148,149,150,151,151,152
  297.     dc.w    153,154,154,155,156,156,157,157
  298.     dc.w    157,158,158,158,159,159,159,159
  299.     Endr
  300.     
  301. *****************************************************************************
  302.  
  303. ; Y Sine Table
  304.  
  305. YSin
  306.     Rept    2
  307.     dc.w    99,99,99,99,99,99,98,98
  308.     dc.w    98,98,98,97,97,97,96,96
  309.     dc.w    95,95,94,94,93,93,92,91
  310.     dc.w    91,90,89,89,88,87,86,85
  311.     dc.w    85,84,83,82,81,80,79,78
  312.     dc.w    77,76,75,74,73,72,71,70
  313.     dc.w    68,67,66,65,64,63,62,60
  314.     dc.w    59,58,57,56,54,53,52,51
  315.     dc.w    50,48,47,46,45,43,42,41
  316.     dc.w    40,39,37,36,35,34,33,32
  317.     dc.w    31,29,28,27,26,25,24,23
  318.     dc.w    22,21,20,19,18,17,16,15
  319.     dc.w    14,14,13,12,11,10,10,9
  320.     dc.w    8,8,7,6,6,5,5,4
  321.     dc.w    4,3,3,2,2,2,1,1
  322.     dc.w    1,1,1,0,0,0,0,0
  323.     dc.w    0,0,0,0,0,0,1,1
  324.     dc.w    1,1,1,2,2,2,3,3
  325.     dc.w    4,4,5,5,6,6,7,8
  326.     dc.w    8,9,10,10,11,12,13,14
  327.     dc.w    14,15,16,17,18,19,20,21
  328.     dc.w    22,23,24,25,26,27,28,29
  329.     dc.w    31,32,33,34,35,36,37,39
  330.     dc.w    40,41,42,43,45,46,47,48
  331.     dc.w    50,51,52,53,54,56,57,58
  332.     dc.w    59,60,62,63,64,65,66,67
  333.     dc.w    68,70,71,72,73,74,75,76
  334.     dc.w    77,78,79,80,81,82,83,84
  335.     dc.w    85,85,86,87,88,89,89,90
  336.     dc.w    91,91,92,93,93,94,94,95
  337.     dc.w    95,96,96,97,97,97,98,98
  338.     dc.w    98,98,98,99,99,99,99,99
  339.     Endr
  340.     
  341. *****************************************************************************
  342.  
  343.